package com.bpc.cs.service;

import java.util.List;

import com.bpc.cs.managed.dvo.FactorDVO;
import com.bpc.cs.managed.dvo.RuleDVO;
import com.bpc.cs.managed.dvo.SchemeDVO;
import com.bpc.cs.util.Message;

/**
 * @author   phan_tp
 * @datetime Nov 30, 2012 : 4:32:53 PM
 */
public interface IRuleService {

	/**
	 * Get list Rule by schemeID
	 * @return ArrayList<RuleDVO>
	 */
	public List<RuleDVO> getRuleBySchemeID(int schemeID);

	/**
	 * Add new rule for scheme
	 * @param SchemeDVO schemeDVO
	 * @param FactorDVO factorDVO
	 * @param float weight
	 * @return Message
	 */
	public Message addRule(SchemeDVO schemeDVO, FactorDVO factorDVO, float weight);

	/**
	 * Edit rule for scheme
	 * @param int ruleID
	 * @param FactorDVO factorDVO
	 * @param float weight
	 * @param List<RuleDVO> listRuleDVO
	 * @return Message
	 */
	public Message editRule(final RuleDVO ruleDVO, final SchemeDVO schemeDVO,
							final FactorDVO factorDVO, float weight, List<RuleDVO> listRuleDVO);

	/**
	 * Remove rule
	 * @param int ruleID
	 * @return boolean TRUE : remove successfully
	 * 				   FALSE: remove failed
	 */
	public boolean removeRule(int ruleID);

	/**
	 * Remove entire rule and factor choice
	 * @param int ruleID
	 * @return boolean TRUE : Delete successfully
	 * 				   FALSE: Delete failed
	 */
	public boolean removeEntireRule(int ruleID);
}
